<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>购物车</title>
    <style>
      thead {
        background-color: #f5f5f5;
      }
      th,
      td {
        border: 1px solid #aaa;
        padding: 8px 12px;
        text-align: center;
      }
    </style>
  </head>
  <body>
    <table width="550px">
      <thead>
        <tr>
          <th>编号</th>
          <th>书籍名称</th>
          <th>出版日期</th>
          <th>价格</th>
          <th>购买数量</th>
          <th>操作</th>
        </tr>
      </thead>
      <tbody></tbody>
    </table>
    <h2 class="price">总价格:¥<span class="price-count">0</span></h2>
    <script>
      //1.先拿到数据
      let books = [
        {
          id: 1,
          name: '《算法导论》',
          date: '2006-09',
          price: 85.0,
          count: 3,
        },
        {
          id: 2,
          name: '《UNIX编程艺术》',
          date: '2006-02',
          price: 59.0,
          count: 2,
        },
        {
          id: 3,
          name: '《编程珠玑》',
          date: '2008-10',
          price: 39.0,
          count: 5,
        },
        {
          id: 4,
          name: '《代码大全》',
          date: '2006-03',
          price: 128.0,
          count: 8,
        },
      ];

      // 获取 tbody
      let tbody = document.querySelector('tbody');
      // 获取 总价格
      let count = document.querySelector('.price-count');

      // 渲染表格
      for (let i = 0; i < books.length; i++) {
        tbody.innerHTML += `
        <tr>
          <td>${books[i].id}</td>
          <td>${books[i].name}</td>
          <td>${books[i].date}</td>
          <td>${books[i].price}</td>
          <td>${books[i].count}</td>
          <td>
            <button class='del'>删除</button>
          </td>
        </tr>
      `;
      }

      // 计算总价格
      let getCount = function () {
        // 获取 tr
        let trs = document.querySelectorAll('tbody tr');
        let newArr = [...trs];
        let res = 0;
        newArr.forEach((ele) => {
          res += ele.children[3].innerHTML * ele.children[4].innerHTML;
        });
        count.innerHTML = res;
      };
      getCount();

      // 删除单个
      tbody.addEventListener('click', (e) => {
        if (e.target.className === 'del') {
          e.target.parentNode.parentNode.remove();
        }
        // 删除后重新计算总价
        getCount();
      });
    </script>
  </body>
</html>
